home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / IATHREAD.PAK / GLOBALS.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  8KB  |  230 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. // PURPOSE:
  9. //    Contains declarations for all globally scoped names in the program.
  10. //
  11.  
  12. //-------------------------------------------------------------------------
  13. // Product identifier string defines
  14.  
  15. #define APPNAME       IAThread
  16. #define SZAPPNAME     "IAThread"
  17. #define SZCHILDNAME   "MdiChild"
  18. #define SZDESCRIPTION "IAThread Example Application"
  19. #define SZABOUT       "About IAThread"
  20. #define SZVERSION     "Version 4.0"
  21.  
  22.  
  23. //-------------------------------------------------------------------------
  24. // Functions for handling main window messages.  The message-dispatching
  25. // mechanism expects all message-handling functions to have the following
  26. // prototype:
  27. //
  28. //     LRESULT FunctionName(HWND, UINT, WPARAM, LPARAM);
  29.  
  30. // Frame window messages
  31. LRESULT MsgCommand(HWND, UINT, WPARAM, LPARAM);
  32. LRESULT MsgClose(HWND, UINT, WPARAM, LPARAM);
  33. LRESULT MsgDestroy(HWND, UINT, WPARAM, LPARAM);
  34. LRESULT MsgCreate(HWND, UINT, WPARAM, LPARAM);
  35.  
  36.  
  37. // MDI child window messages
  38. LRESULT MsgMCCreate(HWND, UINT, WPARAM, LPARAM);
  39. LRESULT MsgMCDestroy(HWND, UINT, WPARAM, LPARAM);
  40. LRESULT MsgMCCommand(HWND, UINT, WPARAM, LPARAM);
  41. LRESULT MsgMCMdiActivate(HWND hwnd, UINT uMessage, WPARAM wparam,
  42.                          LPARAM lparam);
  43.  
  44.  
  45. //-------------------------------------------------------------------------
  46. // Functions for handling main window commands--ie. functions for
  47. // processing WM_COMMAND messages based on the wParam value.
  48. // The message-dispatching mechanism expects all command-handling
  49. // functions to have the following prototype:
  50. //
  51. //     LRESULT FunctionName(HWND, WORD, WORD, HWND);
  52.  
  53. //
  54. // Special command handler to forward a command to the active MDI child
  55. //
  56. LRESULT CmdForwardToActiveChild(HWND, WORD, WORD, HWND);
  57.  
  58. //
  59. // File Commands
  60. //
  61. LRESULT CmdFileNew(HWND, WORD, WORD, HWND);
  62. LRESULT CmdFileClose(HWND, WORD, WORD, HWND);
  63. LRESULT CmdFileExit(HWND, WORD, WORD, HWND);
  64.  
  65. //
  66. // Window Commands
  67. //
  68. LRESULT CmdWindowTile(HWND, WORD, WORD, HWND);
  69. LRESULT CmdWindowCascade(HWND, WORD, WORD, HWND);
  70. LRESULT CmdWindowIcons(HWND, WORD, WORD, HWND);
  71. LRESULT CmdWindowCloseAll(HWND, WORD, WORD, HWND);
  72.  
  73. //
  74. // Help Commands
  75. //
  76. LRESULT CmdAbout(HWND, WORD, WORD, HWND);
  77.  
  78.  
  79. //
  80. // Commands specific to MDI child windows
  81. //
  82. LRESULT CmdMCThreadPriority(HWND, WORD, WORD, HWND);
  83. LRESULT CmdMCThreadSuspend(HWND, WORD, WORD, HWND);
  84. LRESULT CmdMCThreadResume(HWND, WORD, WORD, HWND);
  85.  
  86.  
  87. //-------------------------------------------------------------------------
  88. // Global manifest constants
  89.  
  90. #define DEFAULT_STR_LEN        50       // Default length for strings
  91. #define PRIORITY_TIMEOUT_VALUE 7000     // Initial thread priority timer
  92.                                         // count
  93.  
  94. //-------------------------------------------------------------------------
  95. // Global data structure types
  96.  
  97. // Data structure to contain strings and item data for listboxes.
  98. typedef struct _LISTBOXDATA
  99. {
  100.     char   szString[DEFAULT_STR_LEN];
  101.     LPARAM dwData;
  102. } LISTBOXDATA, *LPLISTBOXDATA;
  103.  
  104. // Data associated with each child window.  This data will be shared between
  105. // the child window its worker thread.
  106. typedef struct _THREAD_DATA
  107. {
  108.     HWND              hWindow;
  109.     HANDLE            hThread;
  110.     DWORD             dwThreadID;
  111.     BOOL              bKill;
  112.     int               nPriorityTimer;
  113.     CRITICAL_SECTION  csCritSec;
  114. } THREAD_DATA, *PTHREAD_DATA;
  115.  
  116.  
  117. //-------------------------------------------------------------------------
  118. // Thread procedures
  119.  
  120. DWORD WINAPI ChildThreadProc (LPDWORD lpData);
  121.  
  122.  
  123. //-------------------------------------------------------------------------
  124. // Global function prototypes.
  125.  
  126. HWND InitFrameWindow(HINSTANCE, int, HMENU);
  127. BOOL RegisterMDIChildClass(HINSTANCE);
  128. BOOL CenterWindow(HWND, HWND);
  129. BOOL FillListBox(HWND          hdlg,
  130.                  int           idListBox,
  131.                  LPLISTBOXDATA lpData,
  132.                  int           cItems);
  133.  
  134. HANDLE GetCurChildWindowThread(void);
  135. PTHREAD_DATA AllocThreadData (void);
  136. BOOL FreeThreadData (PTHREAD_DATA pData);
  137. BOOL ReducePriority (PTHREAD_DATA pThreadData);
  138.  
  139. //-------------------------------------------------------------------------
  140. // Callback functions.  These are called by Windows.
  141.  
  142. LRESULT CALLBACK FrameWndProc(HWND, UINT, WPARAM, LPARAM);
  143. LRESULT CALLBACK MDIChildWndProc(HWND, UINT, WPARAM, LPARAM);
  144.  
  145.  
  146. // Position of window popup menu
  147. #define INITWINDOWMENU        0         // Position in initial menu
  148. #define DOCWINDOWMENU         2         // Position in document menu
  149.  
  150.  
  151. //-------------------------------------------------------------------------
  152. // Global variable declarations.
  153.  
  154. extern HINSTANCE hInst;            // The current instance handle
  155. extern HWND      ghwndFrame;       // The MDI Frame window
  156. extern HWND      ghwndMDIClient;   // The MDI Client window
  157. extern UINT      gcOpenChildWnds;  // Count of all MDI child windows
  158. extern HMENU     ghInitMenu;       // Frame window's initial menu
  159. extern HMENU     ghDocMenu;        // Frame window's document menu
  160.  
  161.  
  162. //-------------------------------------------------------------------------
  163. // Message and command dispatch infrastructure.  The following type
  164. // definitions and functions are used by the message and command dispatching
  165. // mechanism and do not need to be changed.
  166.  
  167.     // Function pointer prototype for message handling functions.
  168. typedef LRESULT (*PFNMSG)(HWND,UINT,WPARAM,LPARAM);
  169.  
  170.     // Function pointer prototype for command handling functions.
  171. typedef LRESULT (*PFNCMD)(HWND,WORD,WORD,HWND);
  172.  
  173.     // Enumerated type used to determine which default window procedure
  174.     // should be called by the message- and command-dispatching mechanism
  175.     // if a message or command is not handled explicitly.
  176. typedef enum
  177. {
  178.    edwpNone,            // Do not call any default procedure.
  179.    edwpWindow,          // Call DefWindowProc.
  180.    edwpDialog,          // Call DefDlgProc (This should be used only for
  181.                         // custom dialogs - standard dialog use edwpNone).
  182.    edwpMDIChild,        // Call DefMDIChildProc.
  183.    edwpMDIFrame         // Call DefFrameProc.
  184. } EDWP;                // Enumeration for Default Window Procedures
  185.  
  186.     // This structure maps messages to message handling functions.
  187. typedef struct _MSD
  188. {
  189.     UINT   uMessage;
  190.     PFNMSG pfnmsg;
  191. } MSD;                 // MeSsage Dispatch structure
  192.  
  193.     // This structure contains all of the information that a window
  194.     // procedure passes to DispMessage in order to define the message
  195.     // dispatching behavior for the window.
  196. typedef struct _MSDI
  197. {
  198.     int  cmsd;          // Number of message dispatch structs in rgmsd
  199.     MSD *rgmsd;         // Table of message dispatch structures
  200.     EDWP edwp;          // Type of default window handler needed.
  201. } MSDI, FAR *LPMSDI;    // MeSsage Dipatch Information
  202.  
  203.     // This structure maps command IDs to command handling functions.
  204. typedef struct _CMD
  205. {
  206.     WORD   wCommand;
  207.     PFNCMD pfncmd;
  208. } CMD;                  // CoMmand Dispatch structure
  209.  
  210.     // This structure contains all of the information that a command
  211.     // message procedure passes to DispCommand in order to define the
  212.     // command dispatching behavior for the window.
  213. typedef struct _CMDI
  214. {
  215.     int  ccmd;          // Number of command dispatch structs in rgcmd
  216.     CMD *rgcmd;         // Table of command dispatch structures
  217.     EDWP edwp;          // Type of default window handler needed.
  218. } CMDI, FAR *LPCMDI;    // CoMmand Dispatch Information
  219.  
  220.     // Message and command dispatching functions.  They look up messages
  221.     // and commands in the dispatch tables and call the appropriate handler
  222.     // function.
  223. LRESULT DispMessage(LPMSDI, HWND, UINT, WPARAM, LPARAM);
  224. LRESULT DispCommand(LPCMDI, HWND, WPARAM, LPARAM);
  225.  
  226.     // Message dispatch information for the main window
  227. extern MSDI msdiMain;
  228.     // Command dispatch information for the main window
  229. extern CMDI cmdiMain;
  230.